Mapped variable smoothing evolution method and device

ABSTRACT

The present inventions generally relate to methods and dedicated apparatuses outputting a variable mapped on a device orientation in a non-inertial reference system, with the device orientation being estimated using measurements of motion sensors (such as 3D accelerometers and gyroscopes) and a magnetometer or other similar sensors including cameras. A variable mapped on an orientation of a device is smoothed to have a gradual evolution by adjusting the estimated orientation of the device obtained via sensor fusion or other sensor processing to take into consideration a current measured angular velocity.

TECHNICAL FIELD

The present inventions generally relate to methods and dedicatedapparatuses outputting a variable mapped on a device orientation in anon-inertial reference system, with the device orientation beingestimated using measurements of motion sensors (such as 3Daccelerometers and gyroscopes) and a magnetometer or other similarsensors including cameras.

BACKGROUND

As described in WO 2012/044964, yaw, roll and pitch angles of a devicein a gravitational reference system may be evaluated using measurementsof a magnetometer and other motion sensors (accelerometers, gyroscopes)attached to the device. These methods include:

-   -   determining a measured 3D magnetic field, a roll, a pitch and a        raw estimate of yaw in the body reference system based on the        received measurements,    -   extracting a local 3D magnetic field from the measured 3D        magnetic field, and    -   calculating yaw angle of the body reference system in the        gravitational reference system based on the extracted local 3D        magnetic, the roll, the pitch and the raw estimate of yaw using        at least two different methods,        wherein estimated errors of the roll, the pitch, and the        extracted local 3D magnetic field affect an error of the yaw        differently for the different methods.

A rotation matrix corresponding to the yaw, roll and pitch angles may beexpressed as a quaternion (conversion between a rotation matrixcorresponding to rotations around three orthogonal axes and a quaternionis known). The result of the sensor fusion methods described in WO2012/044964 may be expressed as a quaternion.

Motion sensors may include gyroscopes or other sensors configured tomeasure angular velocities. The quaternion result from sensor fusionmethod (referred to as “fusion quaternion” hereinafter) is the bestestimation of rotation angles (yaw, roll and pitch) based on allavailable sensor data. The sensor orientation (i.e., the outputquaternion) may be mapped on a variable such as a position of a cursoron a screen or an image displayed to a user of a gaming system.Therefore, the output quaternion should be as accurate, stable (e.g.,varying smoothly rather than “jumpy”) and consistent with all sensorindications as achievable. However, at certain moments, the angleestimations (which may be expressed as the fusion quaternion) do notagree with direct angular velocity measurements and, therefore, are notsuitable for direct and indiscriminate use.

When a conflict between the fusion quaternion and the measured angularvelocity arises, simple approaches to overcome this conflict are (1) touse the fusion quaternion directly or (2) to use measured angularvelocity only.

One problem with the first approach (using the fusion quaterniondirectly) is that the fusion quaternion is not always continuous due tomany reasons, such as magnetic field interference, linear acceleration,accelerometer saturation, etc. Another problem is that a fusionquaternion may keep moving while the device is still, due to delaysintroduced in the fusion process. Moreover, the fusion quaternion mayalso move in a direction different from that indicated by the angularvelocity, due to delay or adjustment.

The second approach (using only angular velocity) is also problematic.The integration drift over a long period of time may cause a largemisalignment between the integrated angular position and the device'strue orientation.

Accordingly, it would be desirable to provide apparatuses and methodsthat advantageously make use of the fusion quaternion while alsomaintaining compatibility with measured angular velocity and avoid theproblems identified above relative to the first and second approaches.

SUMMARY

Method and apparatuses according to various embodiments perform fusionquaternion smoothing in view of a measured angular velocity, and outputa smoothed version of the fusion quaternion. The smoothed quaternionalways moves in a manner that largely agrees with the measured angularvelocity, while also matching the fusion quaternion in the long run.This quaternion smoothing has the advantage that the smoothed quaternionis consistent with the angular velocity within an angle limit and ascale limit, so that any discrepancy or inconsistency is not noticed byusers viewing a cursor or an image determined using the smoothedquaternion. Also, the smoothed quaternion follows the fusion quaternionin the long run, eliminating long-term misalignment.

According to an embodiment, there is a method for smoothing evolution ofa variable depending on an orientation of a device. The method includesdetermining an adjusted angular velocity based on a measured angularvelocity and an estimated angular velocity so as to satisfy one or morepredefined constraints. The method further includes determining acurrent value of the variable according to an adjusted estimate of thedevice's current orientation, obtained using the adjusted angularvelocity.

According to another embodiment, there is a method for smoothingevolution of a variable depending on an orientation of a device. Themethod includes determining an expected orientation using a previousorientation of the device and a measured angular velocity. The methodfurther includes determining a current value of the variable accordingto an adjusted estimate of the device's current orientation, obtained soas to be as close as possible to an estimate of the device's currentorientation, but with an angle between the adjusted estimate of thecurrent orientation and the expected orientation to be less than amaximum angle.

According to another embodiment, there is a gaming system configured todisplay an image to a user according to an orientation of a device. Thegaming system includes (i) sensors mounted on the device and configuredto acquire information leading to a measured angular velocity and anestimate of a current orientation of the device, and (ii) a dataprocessing unit. The data processing unit is configured to determine (A)an adjusted angular velocity based on the measured angular velocity andthe estimated angular velocity so as to satisfy one or more predefinedconstraints, (B) an adjusted estimate of the device's currentorientation, obtained using the adjusted angular velocity, and (C) theimage to be displayed to the user according to the adjusted estimate ofthe current orientation.

According to yet another embodiment, there is an information systemcontrolled by orientation of a device. The system includes sensorsmounted on the device and configured to acquire information leading to ameasured angular velocity and an estimate of a current orientation ofthe device, and a data processing unit. The data processing unit isconfigured to determine (A) an adjusted angular velocity based on themeasured angular velocity and the estimated angular velocity so as tosatisfy one or more predefined constraints, (B) an adjusted estimate ofthe device's current orientation, obtained using the adjusted angularvelocity, and (C) a position of a cursor on a screen based on thedevice's current orientation.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of the specification, illustrate one or more embodiments and,together with the description, explain these embodiments. In thedrawings:

FIG. 1 is an illustration of the problem solved by quaternion smoothing;

FIG. 2 is a flowchart of the quaternion smoothing method according to anembodiment;

FIG. 3 is a block diagram of an angular velocity alignment methodaccording to an embodiment;

FIG. 4 is a graph of smoothed angular velocity versus measured angularvelocity according to two embodiments;

FIG. 5 is a block diagram for determining an adjusted angular velocityaccording to an embodiment;

FIG. 6 illustrates determining the direction of the adjusted angularvelocity according to an embodiment;

FIG. 7 illustrates tremor suppression according to an embodiment;

FIG. 8 is a flowchart of a method according to another embodiment; and

FIG. 9 is a block diagram of an apparatus according to an embodiment.

DETAILED DESCRIPTION

The following description of the exemplary embodiments refers to theaccompanying drawings. The same reference numbers in different drawingsidentify the same or similar elements. The following detaileddescription does not limit the invention. The following embodiments arediscussed, for simplicity, with regard to the terminology and structureof systems using sensor fusion in which a magnetometer and motionsensors are used to evaluate orientation of a device.

Reference throughout the specification to “one embodiment” or “anembodiment” means that a particular feature, structure or characteristicdescribed in connection with an embodiment is included in at least oneembodiment of the present invention. Thus, the phrases “in oneembodiment” or “in an embodiment” in various places throughout thespecification are not necessarily all referring to the same embodiment.Further, the particular features, structures or characteristics may becombined in any suitable manner in one or more embodiments.

FIG. 1 illustrates, as a starting point, the tip of a previous smoothedquaternion q_(s,n-1) (here s stands for smoothed and n−1 indicates aprevious moment). Sensor fusion method yields fusion quaternion q_(f,n)(here f stands for fusion and n indicates the current moment, aftern−1), but the measured angular velocity ω_(n) (considering the timeinterval n−1 to n unitary here and hereinafter when referring to angularvelocity) indicates instead an expected quaternion q_(ω,n) (here ωindicates that measured angular velocity was used to infer thisquaternion and n for the current moment). Methods according to variousembodiments described in this section determine a current smoothedquaternion q_(s,n) (here s stands for smoothed and again n indicates thecurrent moment) located between quaternions q_(f,n) and q_(ω,n). Invarious applications, a variable x (not shown) is mapped on the currentsmoothed quaternion q_(s,n). For example, variable x may be a cursorposition on the screen. The evolution of variable x is smoothed (i.e.,sudden changes are implemented gradually) by using smoothed quaternionq_(s,n).

FIG. 2 is a flowchart illustrating a method 200 for smoothing evolutionof a variable depending on an orientation of a device. Method 200includes, at S210, determining an adjusted angular velocity (e.g.,Ω_(s,n) in FIG. 1) based on a measured angular velocity (ω_(n)) and anestimated angular velocity (Ω_(f,n)), so that the adjusted angularvelocity satisfies one or more predefined constraints. Method 200further includes, at S220, determining a current value (x) of thevariable according to an adjusted (smoothed) estimate of the currentorientation (q_(s,n)) of the device obtained using adjusted angularvelocity (Ω_(s,n)). Details of these steps according to variousembodiments are described below.

FIG. 3 is a block diagram of a quaternion smoothing method 300 accordingto an embodiment. First, in block 310, estimated angular velocityΩ_(f,n) is determined based on the fusion quaternion q_(f,n) (obtainedbased on magnetometer and motion sensor measurements using one of themethods described in WO 2012/044964) and the previous smoothedquaternion q_(s,n-1). This estimated angular velocity Ω_(f,n) is, ingeneral, different from the current angular velocity ω_(n) measured, forexample, by a gyroscope.

In block 320, the adjusted angular velocity Ω_(s,n) leading (whenintegrated) to the smoothed quaternion q_(s,n) is determined as follows.The direction of adjusted angular velocity Ω_(s,n) is set to match thatof the estimated angular velocity Ω_(f,n), if the angle betweenestimated angular velocity Ω_(f,n) and current (measured) angularvelocity ω_(n) is less than a predetermined angle limit θ_(max). Thedirection of adjusted angular velocity Ω_(s,n) is set at θ_(max) fromthe current (measured) angular velocity ω_(n), if the angle betweenestimated angular velocity Ω_(f,n) and current (measured) angularvelocity ω_(n) exceeds the predetermined angle limit θ_(max). Theadjusted angular velocity Ω_(s,n) is in the same plane as estimatedangular velocity Ω_(f,n) and current (measured) angular velocity ω_(n).

Further, the magnitude of estimated angular velocity Ω_(s,n) is setequal to the magnitude of Ω_(f,n)'s component along the angularvelocity's direction, if the ratio between the magnitude of Ω_(f,n) 'scomponent and the angular velocity ω_(n) is within a predetermined scalerange, and the magnitude is set to a minimum/maximum value (dependingupon which limit of the range is exceeded) otherwise.

Then, in block 330, adjusted angular velocity Ω_(s,n) is integrated fromthe previous smoothed quaternion q_(s,n-1) to obtain the currentsmoothed quaternion q_(s,n). Due to the manner in which it is obtained,smoothed quaternion q_(s,n) is always closer to the current fusionquaternion q_(f,n) than quaternion q_(ω,n-1) indicated by measuredangular velocity ω_(n).

A few special situations require particular treatment. A first specialsituation is when the difference between angular velocity ω_(n) andestimated angular velocity Ω_(f,n) exceeds a predetermined threshold. Inone embodiment, fusion quaternion q_(f,n) is output in the first specialsituation. However, other embodiments proceed differently in this firstspecial situation.

A second special situation is when the magnitude of angular velocityω_(n) is less than a minimum velocity ω_(min) (e.g., the user may intendto hold the device still). In one embodiment, the output quaternionq_(s,n) is made equal to the previous smoothed quaternion q_(s,n-1),i.e., the smoothed quaternion angular velocity Ω_(s,n) is zero. Whenangular velocity ω_(n) exceeds the pre-determined minimum ω_(min), thesmoothed angular velocity Ω_(s,n) increases suddenly as illustrated byline 410 in FIG. 4. In one embodiment, this step increase may besmoothed to a more gradual increase as illustrated by curve 420.However, other embodiments may proceed differently in this secondsituation.

Returning now to FIG. 3, tremor suppression (alias smoothed quaternionstabilization) block 340 is optional. The purpose of tremor suppressionis to output a stationary quaternion q′_(s,n) when the current smoothedquaternion q_(s,n) is very close to the previous smoothed quaternionq_(s,n-1) (i.e., the smoothed quaternion is approximately stationary).Such a situation (i.e., second special situation discussed above)occurs, for example, when a user intends to keep the device stationary,but small motions due to hand tremor are sensed. Stabilization is notnecessary when the sensor readings are filtered to remove noise anduser's tremor. However, in case of severe user's tremor or when sensorreadings are not filtered, tremor suppression is beneficial especiallywhen the output quaternion is used to determine a cursor position (i.e.,the variable is the cursor's position).

An embodiment of block 330 for determining adjusted angular velocityΩ_(s,n) (e.g., step S210 in FIG. 2) is illustrated FIG. 5, and furtherexplained in FIG. 6. Determining adjusted angular velocity Ω_(s,n)starts from measured angular velocity ω_(n) and estimated angularvelocity C (i.e., these are the block's inputs). This processingencompasses two aspects: determining the magnitude and the orientationof adjusted angular velocity. These determinations are subject to twoconstraints: (A) the difference between the magnitude of the adjustedangular velocity and the measured angular velocity to be limited (i.e.,the magnitude is within a predetermined range relative to measuredangular velocity's magnitude), and (B) an angle between the estimatedangular velocity Ω_(f,n) and the measured angular velocity w to belimited.

Block 510 calculates the scalar product of estimated angular velocityΩ_(f,n) and measured angular velocity ω_(n). The scalar product may beused to determine the cosine of angle θ between estimated angularvelocity and measured angular velocity:

$\begin{matrix}{{{\cos \; \theta} = \frac{\omega_{n} \cdot \Omega_{f,n}}{{\omega_{n}}{\Omega_{f,n}}}},} & (1)\end{matrix}$

where ∥ indicates magnitude•indicates scalar product.

Block 520 then calculates an initial scale a according to the formula(2):

$\begin{matrix}{\alpha = {\frac{{\Omega_{f,n}}\cos \; \theta}{\omega_{n}}.}} & (2)\end{matrix}$

The numerator of this ratio is the magnitude of the estimated angularvelocity's projection along the measured angular velocity (i.e., fromq_(s,n-1) to point P in FIG. 1). Projecting estimated angular velocityΩ_(f,n) is represented in FIG. 1 using a dashed line, which starts atthe tip of estimated angular velocity Ω_(f,n), is perpendicular to themeasured angular velocity ω_(n), and ends in point P. The initial scalea may then be adjusted in block 530 to a scale value α′ within the range(MinScaling, MaxScaling):

$\begin{matrix}{\alpha^{\prime} = \left\{ \begin{matrix}{MaxScaling} & {{{If}\mspace{14mu} \alpha} > {MaxScaling}} \\{MinScaling} & {{{If}\mspace{14mu} \alpha} < {MinScaling}} \\\alpha & {{for}\mspace{14mu} {all}\mspace{14mu} {other}\mspace{14mu} {\alpha.}}\end{matrix} \right.} & (3)\end{matrix}$

The magnitude of adjusted angular velocity Ω_(s,n) is then:

|Ω_(s,n)=α′|ω_(n)|.  (4)

FIG. 1 illustrates the situation in which α=α′ and, therefore, the locusof the adjusted angular velocity's tip is the dashed portion of a circlewith the center in q_(s,n-1) and passing through point P.

To determine the direction of the adjusted angular velocity, in block540, a set of unit vectors is defined as illustrated in FIG. 6. Unitvector v₀ is along the measured angular velocity ω_(n). Unit vector v₁is along the estimated angular velocity Ω_(f,n). In other words,measured angular velocity ω_(n) and estimated angular velocity Ω_(f,n)may be written as:

ω_(n) =v ₀|ω_(n)|  (5)

Ω_(f,n) =v ₁|Ω_(f,n)|.  (6)

Unit vector v₂ is the normalized component of vector v₁ on a directionperpendicular to vector v₀. Before normalization, vector v₁'s componenton the direction perpendicular to vector v₀ is v₂ ^(u), and it is equalto the difference between the vector v₁ and vector v₀'s projection alongv₁ (i.e., v₁ cos θ):

$\begin{matrix}{v_{2}^{u} = {v_{1} - {v_{0}\; \cos \; \theta}}} & (7) \\{v_{2} = {\frac{v_{2}^{u}}{v_{2}^{u}}.}} & (8)\end{matrix}$

The direction of the adjusted angular velocity Ω_(s,n) is unit vector vdefined using v₀, v₂ and a predefined parameter θ_(max) to be

v=v ₂ sin θ_(max) +v ₀ cos θ_(max).  (9)

Thus, unit vector v is coplanar to unit vectors v₀, v₁, at θ_(max) fromunit vector v₀ toward unit vectors v₁. Other alternative methods may beused to obtain unit vector v.

In one embodiment, at block 550, if angle θ between estimated angularvelocity Ω_(f,n) and measured angular velocity w is less than θ_(max)then v=v₁. Otherwise (if angle θ exceeds θ_(max)) v is calculated withformula (9).

At block 560, outputs of blocks 530 and 550 (i.e., magnitude andorientation) are combined to obtain adjusted angular velocity Ω_(s,n)as:

Ω_(s,n)=|Ω_(s,n) |·v.  (10)

The above-discussed methods for determining adjusted angular velocitycan also be used when smoothed angular position is not represented byquaternions, but by Euler angles or rotation matrices.

The amount of quaternion difference between smoothed quaternion q_(s,n)and fusion quaternion q_(f,n) is influenced by parameters θ_(max),MinScaling and MaxScaling. In some embodiments, these parameters may befixed, but in other embodiments these parameters may be dynamicallyadjusted to obtain a smoother result. For example, the adjustment may bemade larger when the difference between estimated angular velocity andmeasured angular velocity is large.

Under some circumstances (e.g., dramatic changes of the fusionquaternion q), the adjustment might be in one direction for a firstmoment, and change to the opposite direction for a second (next) moment.To reduce radical and frequent changes, in one embodiment, the variationof the quaternion adjustment from one moment to the next may be limited.

Returning now to FIG. 3, in one embodiment, optional tremor suppressionblock 340 operates based on a circular backlash algorithm. Although thequaternion is a 4D variable, the concept of circular backlash isillustrated in FIG. 7 as a 2D drawing. Circle 710 has as its center theprevious stabilized quaternion q′_(s,n-1) and a radius m (i.e., amaximum angular velocity multiplied by an unitary time interval from n−1to n). If the current adjusted quaternion q_(s,n) is inside circle 710,then the stabilized quaternion q′_(s,n) is made equal to the previousstabilized quaternion q′_(s,n-1) (i.e., q′_(s,n)=q′_(s,n-1)) so that thestabilized quaternion q′_(s,n) and the circle surrounding it remain thesame. If the current adjusted quaternion q_(s,n) is outside circle 710,a new circle 720 is shifted relative to circle 710 with the least amountnecessary to cover q_(s,n). Stabilized quaternion q′_(s,n) is the centerof this new circle 720.

Thus, if q_(s,n)−q′_(s,n-1)<m (i.e., q_(s,n) is inside the circle),q′_(s,n)−q′_(s,n-1)=0, otherwiseq′_(s,n)−q′_(s,n-1)=q_(s,n)−q′_(s,n-1)−m (i.e., the output quaternionq′_(s,n) and the circle are shifted with the least amount necessary tocover q_(s,n)).

The current smoothed quaternion q_(s,n) may be obtained in thequaternion domain directly, without using angular velocities (i.e.,skipping blocks 310 and 330 in FIG. 3). FIG. 8 is a flowchart of amethod 800 according to an embodiment, in which an expected orientationq_(ω,n) is determined using measured angular velocity ω_(n) and aprevious orientation q_(s,n-1), at S810. Then, at S820, method 800includes determining a current value x of the variable according to anadjusted estimate of the current orientation q_(s,n) of the device whichis obtained so as to minimize the angle between it and the estimate of acurrent orientation q_(f,n) of the device (e.g., according to the sensorfusion), while satisfying the requirement that the angle φ between theadjusted estimate of current orientation q_(s,n) and expectedorientation q_(ω,n) be less than a maximum angle ω_(max). For example,if the angular difference φ between q_(f,n) and q_(ω,n) is less thanφ_(max), then q_(s,n)=q_(f,n), and otherwise, q_(s,n) may beinterpolated as a weighted average between q_(f,n) (e.g., weighted byφ_(max)/φ) and q_(ω,n) (e.g., weighted by 1−φ_(max)/φ). The accurateinterpolation for quaternion is a spherical linear interpolation, butthe following linear approximation may be used instead:

$\begin{matrix}{{q_{s,n} = {{q_{f,n}w_{f}} + {q_{\omega,n}\left( {1 - w_{f}} \right)}}}{where}{w_{f} = {{\min \left( {1,\frac{\phi_{\max}}{\phi}} \right)}.}}} & (11)\end{matrix}$

The angle difference limit φ_(max) may be a monotonic function of themeasured angular velocity's magnitude |ω_(n)|.

A dedicated apparatus/system may be used to implement theabove-described methods. This dedicated apparatus/system may be part ofa gaming system or an information system controlled by orientation of adevice. For example, FIG. 9 illustrates a block diagram of such a system900. System 900 includes sensors 910 (e.g., an accelerometer, agyroscope and a magnetometer) mounted on the device and configured toacquire information leading to a measured angular velocity ω_(n) and anestimate of a current orientation q_(f,n) of the device. System 900further includes data processing unit 920 configured to determine (A) anadjusted angular velocity Ω_(s,n) based on measured angular velocityω_(n) and estimated angular velocity Ω_(f,n) to satisfy one or morepredefined constraints, and (B) an adjusted estimate of currentorientation q_(s,n) of the device obtained using adjusted angularvelocity Ω_(s,n). The adjusted estimate of current orientation is mappedon variable x that may be used by a hardware component distinct from thedevice. Data processing unit 920 may be located on the device or remote,for example, on the hardware component (e.g., a display) using thevariable x.

If system 900 is a gaming system configured to display an image to auser according to an orientation of a device (e.g., a handheld device),then data processing unit 920 is further configured to determine theimage to be displayed according to the adjusted estimate of currentorientation q_(s,n).

If system 900 is an information system controlled by orientation of adevice, then data processing unit 920 is further configured to determinethe position of a cursor on a screen based on the current orientationq_(s,n) of the device.

System 900 may also include a memory 930 storing a computer programproduct which, when executed by a data processing unit, executes any ofthe above-described methods. The memory may be any suitablecomputer-readable medium, including hard disks, CD-ROMs, digitalversatile disc (DVD), optical storage devices, or magnetic storagedevices such as a floppy disk or magnetic tape. Other non-limitingexamples of computer-readable media include flash-type memories or otherknown memories. Accordingly, the exemplary embodiments may take the formof an entirely hardware embodiment or an embodiment combining hardwareand software aspects.

The disclosed exemplary embodiments provide methods and apparatuses fordetermining an adjusted and (optionally) stabilized orientation of adevice in a non-inertial reference system using measurements of motionsensors (such as 3D accelerometers and gyroscopes) and a magnetometer.It should be understood that this description is not intended to limitthe invention. On the contrary, the exemplary embodiments are intendedto cover alternatives, modifications and equivalents, which are includedin the spirit and scope of the invention. Other sensors could be used tomeasure orientations including angular position sensors, tilt sensors,cameras and so on. The various embodiments can be used when thosealternate sensors are used. Further, in the detailed description of theexemplary embodiments, numerous specific details are set forth in orderto provide a comprehensive understanding of the inventions. However, oneskilled in the art would understand that various embodiments may bepracticed without such specific details. Orientation and angularvelocity are exemplary features here, but similar methods to smooth avariable in a way that minimizes distress to either humans or otherequipment or algorithms downstream. For example, similar methods couldapply to translational movement's position and velocity. The variabledoes not have to be angular position or velocity nor does the targetedconsumer have to be a human being.

Although the features and elements of the present exemplary embodimentsare described in the embodiments in particular combinations, eachfeature or element can be used alone without the other features andelements of the embodiments or in various combinations with or withoutother features and elements disclosed herein.

1. A method for smoothing evolution of a variable depending on anorientation of a device, the method comprising: determining an adjustedangular velocity (Ω_(s,n)) based on a measured angular velocity (ω_(n))and an estimated angular velocity (Ω_(f,n)), such that to satisfy one ormore predefined constraints; and determining a current value (x) of thevariable according to an adjusted estimate of the current orientation(q_(s,n)) of the device obtained using the adjusted angular velocity(Ω_(s,n)).
 2. The method of claim 1, wherein the variable is a positionof a cursor on a screen.
 3. The method of claim 1, wherein the variabledefines an image displayed to a video-game user.
 4. The method of claim1, wherein the adjusted estimate of the current orientation of thedevice, and the measured, estimated and adjusted angular velocities areexpressed in a reference system defined relative to gravity directionand Earth magnetic field direction.
 5. The method of claim 1, furthercomprising: calculating the estimated angular velocity (Ω_(f,n)) usingan estimate of a current orientation (q_(f,n)) of the device and anadjusted estimate of a previous orientation (q_(s,n-1)) of the device.6. The method of claim 5, wherein the estimate of the currentorientation (q_(f,n)) of the device is obtained using a sensor fusionmethod.
 7. The method of claim 6, wherein the sensor fusion method usesmeasurements of a magnetometer and an accelerometer mounted on thedevice, and the measured angular velocity is obtained using a gyroscopemounted on the device.
 8. The method of claim 6, wherein the estimate ofthe current orientation (q_(f,n)) and the adjusted estimate of aprevious orientation (q_(s,n-1)) are expressed as quaternions.
 9. Themethod of claim 1, wherein the one of more predetermined constraintsinclude the adjusted angular velocity (Ω_(s,n)) to be substantiallyequal to zero when the measured angular velocity (ω_(n)) issubstantially equal to zero.
 10. The method of claim 1, wherein thedetermining of the adjusted angular velocity (Ω_(s,n)) includesprojecting the estimated angular velocity (Ω_(f,n)) along a direction ofthe measured angular velocity (ω_(n)), calculating a scaling factor (α)as a ratio of the result of the projecting and a magnitude of themeasured angular velocity (ω_(n)); and if the scaling factor exceeds apredetermined first value (MaxScaling) or is below a predeterminedsecond value (MinScaling), setting the scaling factor (α) equal to thepredetermined first value or to the predetermined second value,respectively, wherein a magnitude of the adjusted angular velocity(Ω_(s,n)) is equal to the magnitude of the measured angular velocity(ω_(n)) multiplied with the scaling factor.
 11. The method of claim 1,wherein the determining of the adjusted angular velocity (Ω_(s,n))includes: determining an auxiliary unit vector (v₂) based on a firstunit vector (v₀) along the measured angular velocity (ω_(n)), a secondunit vector (v₁) along the estimated angular velocity (Ω_(f,n)) and anangle (θ) there-between; and determining a unit vector (v) along theadjusted angular velocity (Ω_(s,n)) using the first, second andauxiliary unit vectors.
 12. The method of claim 11, wherein the unitvector (v) is the second unit vector (v₁) if the angle (θ) between themeasured angular velocity (ω_(n)) and the estimated angular velocity(Ω_(f,n)) is less than or equal to a maximum angle (θ_(max)).
 13. Themethod of claim 12, wherein if the angle (θ) is larger than the maximumangle (θ_(max)), then the unit vector (v) is at the maximum angle fromthe measured angular velocity (ω_(n)), between and in a same plane asthe measured angular velocity (ω_(n)) and the estimated angular velocity(Ω_(f,n)).
 14. The method of claim 13, wherein the determining of theadjusted angular velocity (Ω_(s,n)) includes projecting the estimatedangular velocity (Ω_(f,n)) along a direction of the measured angularvelocity (ω_(n)), calculating a scaling factor (α) as a ratio of theresult of the projecting and a magnitude of the measured angularvelocity (ω_(n)); and if the scaling factor (α) exceeds a predeterminedfirst value (MaxScaling) or is below a predetermined second value(MinScaling), setting the scaling factor (α) equal to the predeterminedfirst value or to the predetermined second value, respectively, whereina magnitude of the adjusted angular velocity (Ω_(s,n)) is equal to themagnitude of the measured angular velocity (ω_(n)) multiplied with thescaling factor (α).
 15. The method of claim 14, further comprising:adjusting at least one of the predetermined first value (MaxScaling),the predetermined second value (MinScaling) and the maximum angle(θ_(max)).
 16. The method of claim 1, further comprising: outputting astabilized current orientation which is equal to a stabilized previousorientation (q′_(s,n-1)) if a difference between the adjusted estimateof the current orientation (q_(s,n)) and the stabilized previousorientation (q′_(s,n-1)) is less than a predetermined threshold (m). 17.The method of claim 16, wherein if a difference between the adjustedestimate of the current orientation (q_(s,n)) and the stabilizedprevious orientation (q′_(s,n-1)) exceeds the predetermined threshold(m), then the stabilized current orientation (q′_(s,n)) is equal to theadjusted estimate of the current orientation (q_(s,n)) after beingshifted with the predetermined threshold, towards the stabilizedprevious orientation (q′_(s,n-1)).
 18. The method of claim 1, whereinthe method is performed by a processor located in the device.
 19. Themethod of claim 1, wherein the method is performed by a processorlocated remotely.
 20. The method of claim 1, wherein the adjustedestimate of the current orientation (q_(s,n)) of the device is obtainedby adding to a previous orientation (q_(s,n-1)) of the device, a changethereof obtained by integrating the adjusted angular velocity (Ω_(s,n))over a time interval.
 21. A method for smoothing evolution of a variabledepending on an orientation of a device, the method comprising:determining an expected orientation (q_(ω,n)) using a previousorientation (q_(s,n-1)) of the device and a measured angular velocity(ω_(n)); and determining a current value (x) of the variable accordingto an adjusted estimate of the current orientation (q_(s,n)) of thedevice, which is obtained such that to minimize the angle between theadjusted estimate of the current orientation (q_(s,n)) and an estimateof a current orientation (q_(f,n)) of the device, while an angle (φ)between the adjusted estimate of the current orientation (q_(s,n)) andthe expected orientation (q_(ω,n)) to be less than a maximum angle(φ_(max)).
 22. The method of claim 21, wherein if the angle (φ) betweenthe estimate of the current orientation (q_(f,n)) of the device and theexpected orientation (q_(ω,n)) is less than the maximum angle (φ_(max))then the adjusted estimate of the current orientation (q_(s,n)) is equalto the estimate of the current orientation (q_(f,n)), and otherwise, theadjusted estimate of the current orientation (q_(s,n)) is a weightedaverage between the expected orientation (q_(ω,n)) and the estimate ofthe current orientation (q_(f,n)).
 23. The method of claim 21, whereinthe adjusted estimate of the current orientation (q_(s,n)) is calculatedaccording to the formula:${q_{s,n} = {{q_{f,n} \cdot w_{f}} + {q_{\omega,n} \cdot \left( {1 - w_{f}} \right)}}},{w_{f} = {{\min \left( {1,\frac{\phi_{\max}}{\phi}} \right)}.}}$24. The method of claim 21, wherein the maximum angle (φ_(max)) is amonotonic function of the measured angular velocity (ω_(n)).
 25. Agaming system configured to display an image to a user according to anorientation of a device, the system comprising: sensors mounted on thedevice and configured to acquire information leading to a measuredangular velocity (ω_(n)) and an estimate of a current orientation(q_(f,n)) of the device; a data processing unit configured to determinean adjusted angular velocity (Ω_(s,n)) based on the measured angularvelocity (ω_(n)) and the estimated angular velocity (Ω_(f,n)), such thatto satisfy one or more predefined constraints, an adjusted estimate ofthe current orientation (q_(s,n)) of the device obtained using theadjusted angular velocity (Ω_(s,n)), and the image to be displayed tothe user according to the adjusted estimate of the current orientation.26. An information system controlled by orientation of a device, thesystem comprising: sensors mounted on the device and configured toacquire information leading to a measured angular velocity (ω_(n)) andan estimate of a current orientation (q_(f,n)) of the device; a dataprocessing unit configured to determine an adjusted angular velocity(Ω_(s,n)) based on the measured angular velocity (ω_(n)) and theestimated angular velocity (Ω_(f,n)), such that to satisfy one or morepredefined constraints, an adjusted estimate of the current orientation(q_(s,n)) of the device obtained using the adjusted angular velocity(Ω_(s,n)), and a position of a cursor on a screen based on the currentorientation (q_(s,n)) of the device.